< previous page page_382 next page >

Page 382
typedef struct _IMAGE_DOS_HEADER {  // DOS .EXE header
    WORD   e_magic;               // Magic number
    WORD   e_cblp;                // Bytes on last page of file
    WORD   e_cp;                  // Pages in file
    WORD   e_crlc;                // Relocations
    WORD   e_cparhdr;             // Size of header in paragraphs
    WORD   e_minalloc;            // Minimum extra paragraphs needed
    WORD   e_maxalloc;            // Maximum extra paragraphs needed
    WORD   e_ss;                  // Initial (relative) SS value
    WORD   e_sp;                  // Initial SP value
    WORD   e_csum;                // Checksum
    WORD   e_ip;                  // Initial IP value
    WORD   e_cs;                  // Initial (relative) CS value
    WORD   e_lfarlc;              // File address of relocation table
    WORD   e_ovno;                // Overlay number
    WORD   e_res[4];              // Reserved words
    WORD   e_oemid;               // OEM identifier (for e_oeminfo)
    WORD   e_oeminfo;             // OEM information; e_oemid specific
    WORD   e_res2[10];            // Reserved words
    LONG   e_lfanew;              // File address of new exe header
  } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
This translates into the following Visual Basic structure. Note that the Visual Basic array indexes are one less than those seen in the C declaration. C language array definitions specify the size of the array, whereas Visual Basic array definitions specify the highest index and the default lower base is 0.
Public Type IMAGE_DOS_HEADER
   e_magic As Integer
   e_cblp As Integer
   e_cp As Integer
   e_crlc As Integer
   e_cparhdr As Integer
   e_minalloc As Integer
   e_maxalloc As Integer
   e_ss As Integer
   e_sp As Integer
   e_csum As Integer
   e_ip As Integer
   e_cs As Integer
   e_lfarlc As Integer
   e_ovno As Integer
   e_res(3) As Integer

 
< previous page page_382 next page >